/**
 * 缓存的封装类
 * @author 周亮
 * @createDate 2020-05-21
 * @notice
 */
class Storage {
	
	/**
	 * 存储方法
	 * @param {Object} key 存储数据的 key
	 * @param {Object} data 存储数据的值
	 */
	static set (key, data) {
		let p = new Promise(function(resolve, reject) {
			uni.setStorage({
				'key': key,
				'data': data,
				'success': function(result) {
					resolve(result)
				},
				'fail': function(err) {
					reject(err)
				}
			})
		})
		return p
	}
	
	/**
	 * 获取缓存中的数据
	 * @param {Object} key 待获取数据的引用
	 */
	static get (key) {
		let p = new Promise(function(resolve, reject) {
			uni.getStorage({
				'key': key,
				'success': function(result) {
					resolve(result)
				},
				'fail': function(err) {
					reject(err)
				}
			})
		})
		return p
	}
	/**
	 * 删除数据
	 * @param {Object} key 根据 key 删除数据
	 */
	static remove (key) {
		let p = new Promise(function(resolve, reject) {
			uni.removeStorage({
				'key': key,
				'success': function(result) {
					resolve(result)
				},
				'fail': function(err) {
					reject(err)
				}
			})
		})
		return p
	}
	
	/**
	 * 清理缓存
	 */
	static clear () {
		try {
		    uni.clearStorageSync()
		} catch (e) {}
	}
	
	/**
	 * 校验是否当前 key 是否已经存在
	 * @param {Object} key 校验的 key
	 */
	static has (key) {
		let isHas = false
		let value = uni.getStorageSync(key)
		if (value) {
			isHas = true
		}
		return isHas
	}
	
}

export default Storage
